package com.ruoyi.order.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.order.domain.JsonData;
import com.ruoyi.order.domain.Order;
import com.ruoyi.order.domain.ProductOrderItem;
import com.ruoyi.order.mq.OrderMessage;
import com.ruoyi.order.request.ConfirmOrderRequest;

/**
 * 订单主表Service接口
 *
 * @author 林道敬
 * @date 2025-01-04
 */
public interface IOrderService  extends IService<Order>
{
    /**
     * 查询订单主表
     *
     * @param id 订单主表主键
     * @return 订单主表
     */
    public Order selectOrderById(Long id);

    /**
     * 查询订单主表列表
     *
     * @param order 订单主表
     * @return 订单主表集合
     */
    public List<Order> selectOrderList(Order order);

    /**
     * 新增订单主表
     *
     * @param order 订单主表
     * @return 结果
     */
    public int insertOrder(Order order);

    /**
     * 修改订单主表
     *
     * @param order 订单主表
     * @return 结果
     */
    public int updateOrder(Order order);

    /**
     * 批量删除订单主表
     *
     * @param ids 需要删除的订单主表主键集合
     * @return 结果
     */
    public int deleteOrderByIds(Long[] ids);

    /**
     * 删除订单主表信息
     *
     * @param id 订单主表主键
     * @return 结果
     */
    public int deleteOrderById(Long id);

    R confirmOrder(ConfirmOrderRequest orderRequest);

    String queryProductOrderState(String outTradeNo);

    boolean closeProductOrder(OrderMessage orderMessage);
}
